<template>
    <div class="wrapper">
        简化代码之JS条件语句的5条守则
    </div>
</template>

<script>
export default {
    components: {},
    props: {},
    data () {
        return {
        }
    },
    watch: {},
    computed: {},
    methods: {
        test (fruit) {
            const redFruit = ['apple', 'strawberry', 'cherry', 'cranberries'];
            if (redFruit.includes(fruit)) {
                console.log('red')
            }
        },
        /**
         * 倾向与对象遍历而不是switch语句
         * 
         * 
         */
        testFun () {
            // 使用条件语句来寻找对应颜色的水果
            switch (color) {
                case 'red':
                    return ['apple', 'strawberry'];
                case 'yellow':
                    return ['banana', 'pineapple'];
                case 'purple':
                    return ['grape', 'plum'];
                default:
                    return []
            }

        },
        objTest (color) {
            // 方法二：使用对象遍历的方法
            const fruitColor = {
                red: ['apple', 'strawberry'],
                yellow: ['banana', 'pineapple'],
                purple: ['grape', 'plum']
            }
            return fruitColor[color] || [];
        },
        /**
         * map()方法,js的默认对象表示方式{}可以视为其他语言中的Map或Dictionary的数据结构，即一组键值对
         * ，但是一般键必须是字符串。结合实际情况Number或者其他数据类型作为键也是合理的。
         * map
         * Set() 是一个新的数据类型
         * 
         * var m = new Map([['M',95],['v',80]])
         *  m.get('v')
         * 初始化Map需要-个二维数组
         * 
         */
        mapFun() {
            // 初始化Map需要一个二维数组
            let  m = new Map() 
            m.set('Adam',67);
            m.set('Bob',59);
            m.hash('Adam');
            m.get('Adam');
            m.delete('Adam');
            m.get('Adam');
        },
        setFun() {
            /**Map 和Set是ES6标准新增的数据类型，请根据浏览器的支持情况决定是否要使用
             * Set和Map类似，也是一组key的集合，但不存储value。由于key不能重复，所以，在Set中，没有重复的key
             * 1，要创建一个Set，需要提供一个Array作为输入，或者直接创建一个空Set：
             * 2，通过add(key)方法可以添加到元素Set中，可以重复添加，但是不会有效果
             * 3,通过delete(key)方法可以删除元素
             */
            let s1 = new Set();
            let s2 = new Set([1,2,3]);
            let s3 = new Set([1,2,3,'3']);
            s3.add(2)
            console.log(s3)
        }
    },
    created () {
        'use strict';
        var m = new Map();
        var s = new Set();
        console.log('你的浏览器支持Map 和Set')
     },
    mounted () {
        const fruit = ['apple', '111']
        this.test(fruit);
        this.mapFun()
        this.setFun()
    }
}
</script>
<style lang="less" scoped>
</style>